﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyIocContainer
{
    public interface IContainer
    {
        //Rejestruje w kontenerze typ konkretny dla danego
        //typu abstrakcyjnego jako singleton
        void Register<TAbstract, TConcrete>();

        //Rejestruje w kontenerze typ konkretny dla danego
        //typu abstrakcyjnego
        void Register<TAbstract, TConcrete>(LifeCycle lifeCycle);

        //Pobiera z kontenera typ Konkretny jako TTypeResolve
        TTypeResolve Resolve<TTypeResolve>();

        //Pobiera z kontenera typ konkretny jako object
        object Resolve(Type typeToResolve);
    }
}
